#pragma once

#include "SourceCode/Renderer/Shader.h"
#include "SourceCode/Renderer/RenderCommand.h"
#include "SourceCode/Renderer/OrthoGraphicCamera.h"

namespace Hazal
{
	class CRenderer
	{
	public:
		static void Init();

		static void OnWindowResize(uint32_t unWidth, uint32_t unHeight);

		static void BeginScene(COrthoGraphicCamera& rCamera);

		static void EndScene();

		static void Submit(const Ref<CShader>& pShader, std::shared_ptr<CVertexArray>& pVertexArrray, const glm::mat4& transformMat);

		static void Shutdown();

		inline static CRendererAPI::API GetAPI()
		{
			return CRendererAPI::GetAPI();
		}

	private:
		struct SSceneData
		{
			glm::mat4 viewProjMatrix;
		};

		static SSceneData* s_pSceneData;
	};
}
